System for transmitting and receiving combination of compressed digital information and embedded strobe bit between computer and external device through parallel printer port of computer

ABSTRACT

A unique combination of software and hardware provides any computer with a system for high speed digital data communications using the computer&#39;s standard parallel printer port. The disclosed embodiment of the invention allows any computer with a standard parallel printer port to play or record digital audio sound allowing the computer to serve as a platform for multimedia presentations.

This application is a continuation of application Ser. No. 08/449,806,filed May 24, 1995, now abandoned, which application is a continuationof application Ser. No. 07/975,709, filed on Nov. 13, 1992, nowabandoned.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates to high speed digital data communications. Morespecifically, this invention relates to high speed bi-directionaldigital data communications through a standard parallel printer port ofa computer to an external communications device. And even morespecifically, this invention relates to the transmission of digitalaudio information through a computer's standard parallel printer port toan external digital audio adapter.

A portion of the disclosure of this patent document contains materialthat is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as the material appears in the Patent andTrademark Office patent file or records, but otherwise reserves allcopyright rights whatsoever.

2. Description of the Related Art

The arrival of multimedia presentations gives owners of existingcomputers a whole slough of new and aggravating problems. Consider forexample a computer user who wants to play or record digital audio soundusing their his computer. Many of today's existing computers lack theability to play or record digital audio sound so our computer user mustlook to acquire new hardware and software to add this capability totheir his computers. One solution for achieving digital audio capabilityis for our computer user to buy an internal audio board to put intotheir computer. Unfortunately, a board level solution is not ideal forall applications for some of the following reasons: (1) the computer maynot have any free slots available, (2) the computer may not have anyslots at all as is true with most notebook computers, and (3) thecomputer user may not have the technical skills to install a board levelproduct into the computer.

A better solution rectifying the above problems is to use an externalcommunications device, with digital audio sound capability, thatattaches easily to a computer's standard parallel printer port. Most, ifnot all computers, can print to a parallel printer. Since this type ofdevice does not use slots, even the most unsophisticated computer usercan install this type of device on their his computer.

However, an external communications device with the ability to play andrecord digital audio and that attaches to the parallel printer port onlyaddresses the connection problem. A bigger part of the problem is thatthe standard parallel printer port, the interface mechanism if you will,is simply too slow in transmitting information for processing real timedigital audio. The slow transmission speed of the parallel printerinterface is even now starting to impact print speeds as printerresolutions approach 1000 dots per inch.

The other part of the problem is the overhead requirements of theparallel printer port interface on the host computer's CPU usage. An I/Oinstruction is a computer command intended to Input or Output databetween the computer and an external device connected to a specific I/Oport (or address). For example, when an 80386 or 80486 microprocessor(CPU) is operating in protected mode when running Microsoft Windows,each I/O instruction takes an extra 25 (80386) or 30 (80486) CPU clockcycles. These extra CPU clock cycles are necessary to verify that thecurrent I/O instruction may use that particular I/O port. Repeated useof I/O instructions, obviously, incurs a high overhead on CPU usage.

Using the standard parallel printer interface in an IBM compatiblecomputer for example, repeated I/O instructions are necessary for everyeight bits of data sent through the parallel printer port using therequired following sequence: (1) output the data to the parallel printerport, (2) set the parallel printer port strobe line (the data isavailable to the printer), and (3) reset the printer port's strobe line(the data is no longer available to the printer).

Another problem with using the parallel printer port is that not all“standard” parallel printer ports are equal. Even when using an IBMcompatible computer and the parallel printer port interface as definedby IBM, there is a substantial difference in the maximum data throughputspeeds for each computer's parallel printer port. This combination offactors makes using the parallel printer port for non-printerapplications, other than printing to older parallel printers, anexceedingly slow operation.

The effective I/O channel transfer speed of a typical computer operatingat a CPU speed of 33 MHz (clock cycles per second) when sendinginformation through a standard parallel printer port slows down to amaximum possible I/O channel transfer speed of around 1 MHz for I/Oinstructions. Because of the combined necessity of preservingcompatibility with older parallel printer port interfaces and theoverhead requirements of the parallel printer interface, the effectiveI/O channel transfer speed for some of the fastest computers on thecurrent market slows down even further to approximately 600 KHz. Sinceit takes two I/O instructions to deliver eight bits of data to theparallel printer port (for normal printer operations), the net I/Ochannel transfer speed is now 200 KHz (or 1.6 million bits per second).

If a digital audio device requires a transmission speed 16 bits of data44100 times per second (44.1 kHz) to the device as does Compact Disk(CD) quality digital audio sound, the required transmission speed of thedata is:

16 bits/sample*44100 samples/sec=705.6 Kbits/sec

Therefore, a host computer must spend 705.6 Kbits/1.6 Mbits=44% of itsCPU time just for the I/O operations involved in playing the digitalaudio, and this time does not include the time required to retrieve thedigital audio information from storage or manipulating the digital audioinformation in memory. Even when compressing the digital audio to fourbits per sample before transmission to an external communications deviceconnected to a standard parallel printer port, the host CPU must stillspend 11% percent of its time for playback of digital audio sound. Inmultimedia presentations, the combination of slow transmission speed andCPU overhead is unacceptable because the host computer also must attendto a myriad of other duties such as displaying graphics on the videoscreen or retrieving and processing other data.

OBJECT AND SUMMARY OF THE INVENTION

An object of this invention is to provide a system for transmittingdigital audio information through a computer's standard parallel printerport.

A feature of this invention is that a computer's standard parallelprinter port is capable of bi-directional high speed transmission ofdigital information.

An advantage of this invention is that the high speed digital datacommunications link greatly reduces the host computer's CPU overheadnormally associated with using the parallel printer interface.

This invention gives any computer with a standard parallel printer porta high speed bi-directional digital data communications link to avariety of external devices that can include network adapters (e.g.,ethernet adapter), SCSI I/O adapters, and digital audio devices. Withoutmodifying the hardware of the computer's standard parallel printer port,the external communications device, an integral part of the invention,attaches easily to the outside of the computer's parallel printer port.The combined invention can then easily transmit and receive high speeddigital data information between the host computer and the externalcommunications device using the computer's standard parallel printerinterface.

To maximize the information throughput, the invention has two additionalcomponents. First, the invention determines the maximum speed fortransmitting and receiving digital data information for any givencomputer's standard parallel printer port. And second, the inventioncompresses all digital data information before the information passesbetween the host computer and the external communications device.

As will become evident from the detailed description, this inventiongives current computer users the luxury of using their existingcomputers to perform multimedia presentations that require playing orrecording of digital audio sound.

DESCRIPTION OF THE DRAWINGS

To further aid in understanding the invention, the attached drawingshelp illustrate specific features of the invention. The following is abrief description of the attached drawings:

FIG. 1 is an overview of the invention that shows an externalcommunications device connected to a standard parallel printer port ofpersonal computer.

FIG. 2 is a register map of the programming model for the standardparallel printer port.

FIG. 3 is a sample seven bit data stream showing the use of an embeddedstrobe bit.

FIG. 4 is a block diagram of the hardware component of the invention.

FIG. 5 is a flowchart describing the process for determining the speedof a host computer's standard parallel printer port.

FIG. 6 is a sample data stream for determining the speed of a computer'sstandard parallel port.

FIG. 7 is a code fragment for implementing the process of FIG. 5.

FIG. 8 is a flowchart describing the process for transmitting digitalinformation through the standard parallel printer port of a hostcomputer.

FIG. 9 is a code fragment implementing the process of FIG. 8.

FIG. 10 is a flowchart describing the process for receiving digitalinformation from the standard parallel printer port of a computer.

DETAILED DESCRIPTION OF THE INVENTION

Consideration of the following example, which is purely exemplary,further clarifies the use of the invention.

One object of this invention is to provide a system for transmitting andreceiving digital audio sound through a computer's standard parallelprinter port. A major advantage of this invention is that the hardwareof the computer's parallel printer port does not require modification.Rather, this invention achieves its high transmission speed by a uniquecombination of software techniques and external hardware.

The IBM personal computer, released in the early 1980s, set many defacto standards in the personal computer industry because of IBM's bluechip name, widespread availability, and open architecture. One of thesestandards was IBM's implementation of the venerable parallel printerinterface. The IBM Personal Computer Technical Reference Manual, IBMpart number 6025005 (revised April 1983), on pages' pages 1-117 through1-122, describes the “standard” parallel printer interface used forcontrolling a parallel printer; pages' pages 1-117 through 1-122 areincorporated herein by reference.

Turning now to the drawings, FIG. 1 shows an external communicationsdevice 18, the hardware component of the invention, attached to thestandard parallel printer port interface 4 of a personal computer 2. Thepersonal or host computer 2 contains a microprocessor as the centralprocessing unit (CPU), memory, video subsystem, and other subsystems.One subsystem common to most personal computers is the standard parallelprinter port interface 4. The parallel printer interface as used hereinmeans a connection, having a plurality of wires, between the personalcomputer 2 and some external communications device 18. Examples of thepossible uses for this invention include network adapters, SCSI I/Oadapters, high speed printer buffers, as well as the disclosedembodiment: a digital audio sound adapter. The parallel printer port 4,from a programming model, consists of 3 modules: the data port 6, thestatus port 8, and the control port 10. Each port is an eight bit dataport connected to, and a part of, the parallel printer interface. Inother words, a single bit corresponds on a one to one basis with one ofthe wires in the parallel printer interface. However, the IBM standardparallel printer interface does not use all the wires, leaving somewires (or bits) unused. Therefore, the eight bit data port 6 consists ofthe eight-wire data port lines 12 connecting to the externalcommunications device 18. In a similar fashion, the five bit status port8 consists of the five-wire status port lines 14 connecting to theexternal communications device 18; and the four bit control port 10consists of the four-wire control port lines 16 connecting to theexternal communications device 18. These three ports and seventeensignal wires constitute the electrical portion of the standard parallelprinter port.

One skilled in the art knows the functionality of the standard parallelprinter port; therefore, FIG. 2 briefly represents the register map ofthe programming model (of the hardware) for accessing a standardparallel printer port using an IBM compatible personal computer. Thestandard parallel printer port uses the following three adjacentregister addresses (references are to FIG. 1): (1) the data port 6; thestatus port 8; and the control port 10. As shown by FIG. 2, the dataport is either an eight bit data output only port, or is an eight bitbi-directional communications port with the proper software andhardware. The control port, besides its printer control duties, isnominally a four bit output port, and the status port is nominally afive bit input port.

The following description is the normal sequence of events for printinga single character when using the standard parallel printer port. First,the computer (or program) reads the status port to determine theprinter's availability. If the printer is available, the computeroutputs a character value to the data port. The computer then sets thehardware strobe-bit, bit 0 within the control port, so that the printerknows that data is ready for transfer from the computer to the printer.The computer then resets the strobe bit so that the printer knows thatdata is no longer available for reading.

Most external devices using the parallel printer port interface use thehardware strobe line (bit 0) to clock the data on the leading edge(using only one edge) of the signal. As previously stated, using thehardware strobe line as a communication clock for high speedcommunications is not satisfactory. If we could clock the data usingboth edges of the clock signal then we could increase the datathroughput. Indeed, clocking data on both edges of a clock signal is awell-known technique. In many such devices, the technique is to latchone register on the rising edge and a different register on the fallingedge. The Sierra Semiconductors SC11486 RAMDAC in true color mode, forexample, uses this technique. Even though clocking on both edges of thesignal increases the data throughput for non-printer applications, theoverall data throughput still is unsatisfactory for digital audioapplications because of the overhead on the CPU's processing time thatis necessary to use 2 I/O instructions to send eight bits of datathrough the parallel printer port.

A more effective way to increase the data throughput on a standardparallel printer port is to embed the strobe bit into one of the eightbits of the data being sent to the external communications device. Withone of eight bits being used for the strobe, the other seven of eightbits are for data. Since this invention involves a hardware component,we effectively move the strobe detection circuit from the hardwarestrobe line (the normal location for printers) to the high bit (bit 7)of the data lines. Moving the strobe detection coupled with the abovetechnique for clocking the data on the rising and falling edges of theclock allows this invention to utilize more efficiently the data channelby minimizing the CPU's I/O instruction access penalty. By controllingthe design of the external communications device and how the deviceresponds to the standard parallel printer interface, our invention doesnot require any modification to the hardware of the computer's parallelprinter port.

In the late 1970's and early 1980's, the Cromemco Z80 personal computer,and probably several other early personal computer systems of that time,used the high bit of the data stream for I/O port selection on theCromemco's parallel printer port (which was not an IBM compatibleparallel printer port). The Cromemco computer's printer driver code senta seven bit data value to the printer port. The Cromemco computer thenforced the eighth bit high, and then set it low (which reset the strobe)while leaving the original seven data bits, unchanged, on the remainderof the port. Cromemco connected the hardware strobe line of the parallelprinter interface to the high bit of the data port. This trick saved thehardware cost of an additional parallel port and I/O address decodercoupled only with the limitation of sending seven bit ASCII codes to theprinter. When building the Cromemco computer, the cost of hardware wasthe limiting factor so designs during the period minimized additionalhardware with a passion. The communication speed of the data channel wasnot a design objective because the Cromemco computer could operate muchfaster than the parallel printers of the day; moreover, the Cromemcocomputer was not capable of concurrently performing other tasks. As isevident, the early computers did not use the high bit as an embeddedstrobe for clocking as does the invention; rather, the Cromemco computerused the high bit of the data port only to control the hardware strobeline of the parallel printer interface.

Most CPU's (microprocessors) have block (or string) mode I/Oinstructions. A block mode instruction transfers or moves a block ofdata, from a couple of bytes to several thousands (or more) of bytes,more efficiently than repeated use of a single byte transfer or moveinstruction. The extra CPU cycle overhead associated with I/Oinstructions occurs only once at the start of the block I/O instruction,and as previously noted, an I/O instruction takes an extra 25 (80386) or30 (80486) CPU clock cycles in 80×86 protected mode. The CPU overheadthen drops to five CPU clock cycles for each data value transferred withthe block I/O instruction. Since block mode I/O instructions can onlytransfer data to a single I/O port, these instructions are not usefulfor printer applications for sending data to a standard parallel printerbecause the block I/O instruction cannot alternate sending informationbetween the data port and the control port (for setting and resettingthe strobe bit). By embedding the strobe information into the datastream as discussed above, using the block mode I/O instruction fortransferring information through a standard parallel printer port is nowviable; provided however, the external communications device can decodestrobe information in the data stream, not the hardware strobe line.

Turning to FIG. 3, consider a data format with seven data bits (bits0-6) and an embedded strobe bit (bit 7). The embedded strobe is separateand distinct from the dedicated hardware strobe within the control portof the parallel printer port. If the rising edge of the embedded strobebit causes the external communications device to latch and accept thedata, the following six byte sequence will send twenty-one bits of datato the data port using a block I/O instruction. The block I/Oinstruction first sends the seven bit value XXXXXXX with a strobe bit ofzero to the data port. The block I/O instruction again sends the sameseven bit value XXXXXXX to the data port but this time with the strobebit set to one. Sending the same data twice and toggling the strobe bitmimics the operation of the hardware strobe line, and this techniquedoes not incur the CPU I/O overhead of accessing the hardware strobeline.

Assuming an I/O channel transfer speed of 1 MHz (theoretical maximum)for transferring data through a standard parallel printer port, two I/Ochannel transfer cycles per transferred data value, and seven bits ofdata per data value, our data communications speed through a standardparallel printer port is:

(1 MHz*7 bits)/2 cycles=3.5 Mbits/sec

Or over twice the previously possible throughput.

We can double the performance again by clocking the data on eachtransition of the strobe bit, rather than on just the positive goingedge. By sending the data value once instead of twice, the datacommunications speed increases to seven Mbits/second.

FIG. 4 is a block diagram of an external communications device fortransmitting and receiving compressed digital audio information betweenthe device and a host computer. The data port lines 12, status portlines 14, and control port lines 16 connect to a digital interface 20 ofthe external communications device. The digital interface consists of:(1) a data interface circuit 22 that receives signals from the data portlines 12; (2) a status transmit circuit 24 that sends signals on thestatus port lines 14; (3) and a control receive circuit 26 that receivessignals from the control port lines 16.

From the digital interface circuit 22, the internal data path 32 dividesinto three subgroups. The most significant bit (D7) is the embeddedstrobe bit 34. The next three bits (D6, D5, and D4) are the address bits36. Lastly, the remaining four bits (D3, D2, D1, and D0) are the databits 38. As discussed later in the specification, the data is in acompressed format using the Adaptive Differential Pulse Code Modulation(ADPCM) compression technique that takes a twelve bit digital audiosample and turns that sample into a four bit representation of thesample.

The embedded strobe bit 34 connects to an edge transition strobe detectcircuit 28 that detects when the embedded strobe bit 34 changes. Thestrobe detect circuit 28 generates the strobe signal 30. An edgetransition detector is a well-known technique and generally involves anexclusive-or gate comparing the signal in question with a delayedrepresentation of that signal. Due to the uncertainty in the settlingtime the various bits take to change to their new values, the strobedetect circuit 28 delays the strobe signal 30 until all the address bits36 and data bits 38 are valid.

The address decoder 40 interprets the address bits 36, gates the addressbits with the strobe signal 30 to generate the decoded address signals42. The control logic 44 uses the decoded address signals 42 as itscommand instruction signals. The command instruction signals form thebasis for a command instruction set. The control logic 44 is asequential state machine that in the disclosed embodiment consists of anActel ACT1010A. The Actel gives the external communications device 18the ability to perform a wide variety of functions. One skilled in theart, with this disclosure, can create a sophisticated commandinstruction set giving the external communication devices greatflexibility. An example of some of the commands are as follows: starttimer, stop timer, send contents of timer to host computer, play,record, store data into DRAM buffer, transfer record data to host. Thecontrol logic connects to the digital audio subsection 50 and to theDRAM buffer 46. The DRAM buffer 46, as the name suggests, buffers thedata when either the host computer 2 or the external communicationsdevice 18 gets ahead of the other one (as in too fast) when transmittingdigital information. The DRAM buffer 46 consists of a 256 kbytes×4 bitDRAM array. The preferred embodiment, however, uses approximately 64kbytes of the buffer so as to reduce the addressing logic within thecontrol logic 44. The disclosed 64 kbytes DRAM buffer 46 can storeapproximately 1.486 seconds of 44.1 kHz digital audio samples.

Connected to the control logic 44 is the digital audio subsection 50.The digital audio subsection 50 consists of a digital audio controlsection 52, a digital to analog signal converter (D/A) 54 with itscorresponding analog output 66, an analog to digital signal converter(A/D) 56 with its corresponding analog input 68, and a digital datacompression/decompression section 58 employing the ADPCM system of datacompression. These functions are well known in the art and availablewithin a single integrated circuit such as the OKI SemiconductorMSM6388. The digital audio control logic 52 of the digital audiosubsection 50 connects to the control logic 44 through the following:(1) a bi-directional data path 60; (2) a control path 62; and (3) theaudio control clock 64. The audio control clock 64 effectivelysynchronizes data transfers between the digital audio subsection 50 andthe control logic 44.

The control logic 44 connects to the data selector 70 through the datacontrol signals 72 and the data source signals 74. The data selector 70selects the appropriate data source, and then delivers the selected dataoutput 76 to the status transmit circuit 24 which in turn connects tothe status port signal lines 14. The data sources within the externalcommunications device include the counters and command registers withinthe control logic 44 and the contents of the DRAM buffer 46 (accessedthrough the control logic 44). Referring to FIG. 1, the host computer 2receives the data from the external communications device 18 through thestatus port 8.

Finally regarding FIG. 4, the preferred embodiment contains two internalcrystals 82 and 84 for timing purposes. Crystal 82 has a frequency of8.192 MHz, and Crystal 84 has a frequency of 9.878 MHz. These twofrequencies, when divided down properly, allow the digital audiosubsystem to sample analog audio data with a sample range from around3.6 kHz to 44.1 kHz. A frequency of approximately 3.6 kHz has thequality of a pocket micro recorder, while 44.1 kHz is the frequency foraudio CD's and the latest Digital Audio Tape (DAT) drives. This broadrange of sampling frequencies highly optimizes the disclosed embodimentfor playing and recording digital audio sound.

The host computer user, in the preferred embodiment, selects theappropriate sampling frequency that the software sends to the controllogic 44. The oscillator crystal selection logic 86 connects thecrystals 82 and 84 via the selected clock signal 80 to the control logic44. Depending upon the selected frequency, the control logic 44 receivesthe selected clock signal 80 and further divides the signal either by 1or by 4. The control logic 44 sends the resulting signal to the digitalaudio subsystem control logic 52 as the clock reference signal 88. TheOKI MSM6388, the digital audio subsystem 50, has a range of userselectable internal clock dividers that divide the clock referencesignal 88 to the selected sampling frequency. The control logic 44 nextsends the digital audio subsystem 50 a command that selects one of theinternal clock dividers so that the subsystem uses the appropriatesampling frequency.

One criterion for this invention is that the hardware of the hostcomputer's parallel printer port interface remains unmodified. Due tothe variance in the maximum possible speeds for each host computer'sparallel printer port, and the differences in CPU clock speeds for eachhost computer, this invention must first determine the optimal datacommunication speed between the host computer and the externalcommunications device. FIG. 5 is a flow chart representing the techniquefor determining the maximum data transfer rate of a particularcomputer/parallel printer port combination. Although the design of theinvention is such that it can easily handle data as fast as most PCs cansend it, future PCs may send data faster than the externalcommunications device could accept it. This is really a two partproblem. The first part is detecting whether the standard parallelprinter port (i.e., the host computer driving the parallel printer port)is too fast for the external communications device, and the second partis slowing down the effective transfer rate of the host computer tocompensate for the increased speed capability. The second problem is theeasiest. If the computer can send data twice as fast as the externalcommunications device can accept the data, simply send each data byte tothe external communications device twice. If the computer can send datathree times as fast, send each byte three times.

Determining the maximum data communications throughput of the hostcomputer and the computer's standard parallel printer port is moredifficult than slowing down the effective transfer rate. Referring toFIG. 4, the external communication device includes a programmable timerwithin the control logic 44 that counts clock cycles of one of theinternal crystals 82 or 84. We can measure the standard parallel port'seffective transfer rate by determining the time it takes to perform aset number of output instructions. Referring now to FIG. 5, the firststep in the process is to disable interrupts in the host computer sothat the timing data block (of FIG. 6) sent through the standardparallel printer port continues without interruption for a precise timemeasurement. The host computer then sends a command to the externalcommunication device initializing it for a time measurement. The nextstep is creating a block of data to send to the external communicationsdevice. FIG. 6 shows the organization of the data block that consists ofa number of dummy data values (or NO-OP instructions) with the embeddedstrobe bit high so that the external communications device knows not toread the data. The next part of the data block is a number of data bytescontaining the ‘start timer’ command with the embedded strobe bit low.Sending a large number of ‘start timer’ commands ensures an accuratetiming sample. The timer starts as soon as the control logic 44 decodesthe ‘start timer’ command. By keeping the embedded strobe bit low, theexternal communications device sees only one ‘start timer’ command. Thenext step is transmitting several ‘stop timer’ commands with theembedded strobe bit high to the external communications device. Thisforces the external communications device to stop the timer as soon asit decodes the ‘stop timer’ command. The host computer then retrievesthe number of clock cycles that it took for the external communicationsdevice to receive the data block of ‘start timer’ commands. Determiningthe data communication speed for the host computer to transmit a singledata byte to the external communications device is as follows:

IOtransactions=number of ‘start timer’ commands sent

ClockTicks=number of external communications device counter tickscounted during ‘IOtransactions’

CyclesPerOp=number of internal clock cycles it takes the externalcommunications device to perform a given operation

OutputsPerByte=number of output cycles performed for each byte of datato be sent to the external communications device then nominally,

OutputsPerByte=1+(IOTransactions*CyclesPerOp)/ClockTicks Note that theabove calculation uses integer (truncating) division.

FIG. 7 is a code fragment in 80×86 assembly language for implementingthe method of FIG. 5. No particular programming language is necessaryfor carrying out the various procedures in this invention. Users ofparticular computers are aware of the language that is most suitable fortheir immediate purpose. For this invention, a combination of 80×86assembly language and high level language was most satisfactory.

FIG. 8 describes the process for transmitting digital informationthrough the host computer's standard parallel printer port to anexternal communications device attached to the computer's printer port.The first step in the transmit process is to send a command to theexternal communications device putting the device into the receive mode.The next step is to retrieve the digital audio information from the hostcomputer's storage medium (e.g., a hard disk). As indicated by the codefragment of FIG. 9, we assume that the format of the digital informationon the computer's storage medium is in a combined packed and compressedformat. There is no requirement for storing the digital audioinformation in this format, but storing the data in this manner saves agreat deal of space on the hard disk. An element of this invention,however, requires the digital audio information to be in a compressedformat for transferring to the external communications device. Thecompression format used in the disclosed embodiment of this invention isthe Adaptive Differential Pulse Code Modulation (ADPCM). The ADPCMtechnique in this invention takes a twelve bit sample of an analog audiosample, and then compresses and converts the audio sample into a fourbit compressed digital audio sample. ADPCM is not a lossless compressionmethod and is not suitable for all applications though it is entirelyadequate for transferring digital audio information. If we weretransferring video data using the invention, we would require a datacompression technique that had less loss when transferring the digitalinformation. Data compression techniques such as JPEG (JointPhotographic Experts Group) or MPEG (Motion Picture Experts group) givefar superior results for video images. In the disclosed embodiment, ourchoice of compression techniques was the result of using an OKI MSM6388audio compression engine 50 (of FIG. 4).

With ADPCM compression, the data transfer through the parallel portinterface required to support 44 KHz digital audio is now:

4 bits/sample*44100 samples/sec=176.4 Kbits/sec

The maximum throughput for this invention is 7 Mbits/sec. As a result ofusing the four bit sample ADPCM compression in the disclosed embodiment,the maximum throughput for this embodiment is 4 Mbits/sec. The resultingoverhead on the CPU is now:

(176.4 Kbits/sec)/(4 Mbits/sec)=4.4% of CPU time.

The combined techniques of this invention reduce the CPU time requiredfor transferring digital audio information through a standard parallelprinter port interface from 44% to 4.4%.

The digital information residing on the host computer's storage mediumin our disclosed embodiment is also in a packed format. The packedformat takes advantage of the four bit sample of the ADPCM compressionby putting two four bit samples into a single eight bit byte. The resultis that the compressed digital audio information takes up less storagespace on the host computer. Since our disclosed embodiment istransferring data as a four bit digital audio sample, we unpack theeight bit byte back into two separate four bit samples. FIG. 9 includesa code fragment for retrieving and unpacking the digital information.

Referring to FIG. 8, the next step in the process is embedding thestrobe bit into the compressed digital audio information. Afterembedding the strobe bit, the host computer transmits the compresseddigital audio information through its standard parallel printer port,using the previously described techniques, to the externalcommunications device. FIG. 9 additionally includes a code fragment fortransmitting the compressed digital audio information using a block I/Oinstruction. The external communications device then receives thecompressed digital audio information. The digital audio subsection 50(of FIG. 4) decompresses and converts the four bit compressed digitalaudio information into twelve bit digital audio information, and thenconverts the digital audio information into analog audio information.Analog audio is now available for playing from the externalcommunications device.

The process for the host computer to receive digital information throughits standard parallel printer port is very similar to the transmitprocess. Instead of the host computer receiving the digital informationthrough the data port, however, the preferred embodiment receives theinformation through the status port. As previously discussed, not allcomputers have bi-directional data ports. Receiving digital informationthrough the status port allows the invention to operate on a widervariety of computers without the need to modify the hardware of the hostcomputer's parallel printer port. This method of receiving digitalinformation is suitable for recording digital audio for several reasons.One, recording digital audio is usually not as time critical as theplayback function. This means that the record function can utilize moreof the host computer's CPU time. And second, the digital audioinformation is in a four bit format, and that makes the five bit inputcapability of the status port suitable for transferring the information.If the application is something other than giving computers digitalaudio capability like video information for example, then using thestatus port for receiving the digital information is not satisfactory.One skilled in the art, armed with the knowledge of this disclosure, canmodify the software and hardware of this invention so that the externalcommunication device transmits information to the host computer throughthe host computer's data port.

FIG. 10 describes the process for a host computer to receive digitalinformation from its standard parallel printer port from an attachedexternal communications device. The first step in the process is for thehost computer to send a command to the external communications devicetelling the device to start processing audio information. Afterreceiving the command, the external communications device beginsconverting and compressing the audio information into compressed digitalaudio information. As previously discussed, the external communicationsdevice uses the OKI MSM6388 audio compression engine 50 (of FIG. 4),which here is functioning as a twelve bit to four bit analog to digitalconverter. The OKI MSM6388 uses the ADPCM compression method to compressthe information into the four bit compressed digital audio sample.

The next step in the process is for the external communications deviceto transmit the compressed digital audio information to the hostcomputer. The host computer sends a command to the externalcommunications device telling the device to transmit data to thecomputer. The host computer receives the compressed digital audioinformation from the external communications device through the hostcomputer's standard parallel printer status port. This process continuesuntil the host computer sends a command to the external communicationsdevice telling the device to stop processing information and to stoptransmitting data to the host computer. After the host computer receivesthe information, the user has the option of decompressing the compresseddigital audio information before storing the information on the hostcomputer's storage medium, or the user can store the information in thecompressed format. The compressed digital audio information, of course,takes less storage space, and since the information is in a four bitdigital audio sample, the information packs easily into the two four bitsamples per eight bit byte format as previously described.

This invention, as disclosed above, is a unique combination of softwareand hardware elements that transforms a computer with a standardparallel printer port into a multimedia presentation platform. Otherembodiments of the invention are apparent to those skilled in the artafter considering this specification or practicing the disclosedinvention. The specification and examples above are exemplary only, withthe true scope of the invention being indicated by the following claims.

We claim the following invention:
 1. Apparatus for transmitting andreceiving digital information through a parallel printer port,comprising: a computer with a parallel printer port; an externalcommunications device connected to said computer through said parallelprinter port, said external communications device transmits and receivesdigital information to and from said computer; compressing means forcompressing said digital information into compressed digitalinformation; an embedded strobe bit combined with said compresseddigital information, said embedded strobe further comprises one bit ofan eight bit data port of said parallel printer port and said compresseddigital information comprises seven bits of said eight bit data port ofsaid parallel printer port; means for transmitting and receiving saidcombination of said compressed digital information and said embeddedstrobe bit between said computer and said external communications devicethrough said parallel printer port; and decompressing means fordecompressing said compressed digital information.
 2. The apparatus ofclaim 1 wherein said compressing means and said decompressing means useADPCM technique.
 3. The apparatus of claim 1 further comprisingdetermining means for determining the maximum transmission speed of saidparallel printer port.
 4. The apparatus of claim 1 further comprisingthe block move instruction for multiple-byte transfers of digitalinformation of said computer.
 5. The apparatus of claim 1 furthercomprising storage medium of said computer used to store the digitalinformation on said computer.
 6. Apparatus for transmitting andreceiving digital information through a parallel printer port,comprising: a computer with a parallel printer port; an externalcommunications device connected to said computer through said parallelprinter port; embedding means for embedding an embedded strobe bit, saidembedded strobe further comprises one bit of an eight bit data port ofsaid parallel printer port; compressing means for compressing digitalinformation into compressed digital information, said compressed digitalinformation further comprises seven bits of said eight bit data port ofsaid parallel printer port; combining means for combining said embeddedstrobe bit and said compressed digital information; means fortransmitting and receiving said combination of said compressed digitalinformation and said embedded strobe bit between said computer and saidexternal communications device through said parallel printer port; anddecompressing means for decompressing said compressed digitalinformation.
 7. The apparatus of claim 6 wherein said compressing meansand said decompressing means use ADPCM technique.
 8. The apparatus ofclaim 6 further comprising determining means for determining the maximumtransmission speed of said parallel printer port.
 9. The apparatus ofclaim 6 further comprising block move means for multiple-byte transfersof digital information of said computer.
 10. The apparatus of claim 6further comprising storage means for storing the digital information onsaid computer.
 11. A method for transmitting and receiving digitalinformation through a parallel printer port, comprising the steps of:compressing digital information into compressed digital information,said compressed digital information further comprises seven bits of aneight bit data port of a parallel printer port; combining saidcompressed digital information with an embedded strobe bit, saidembedded strobe further comprises one bit of said eight bit data port ofsaid parallel printer port; transmitting and receiving the combinationof said compressed digital information and said embedded strobe bitbetween a computer and an external communications device through saidparallel printer port; and decompressing said compressed digitalinformation into said digital information.
 12. The method of claim 11wherein said step of compressing and said step of decompressing useADPCM technique.
 13. The method of claim 11 further comprising the stepof determining the maximum transmission speed of said parallel printerport.
 14. The method of claim 11 further comprising the step of movingmultiple-byte digital information using block move instruction of saidcomputer.
 15. The method of claim 11 further comprising the step ofstoring the digital information on a storage medium on said computer.16. A program storage device readable by a machine, tangibly embodying aprogram of instructions executable by the machine to perform methodsteps for transmitting and receiving digital information through aparallel printer port, said method steps comprising the following steps:compressing digital information into compressed digital information,said compressed digital information further comprises seven bits of aneight bit data port of a parallel printer port; combining saidcompressed digital information with an embedded strobe bit, saidembedded strobe further comprises one bit of said eight bit data port ofsaid parallel printer port; transmitting and receiving the combinationof said compressed digital information and said embedded strobe bitbetween a computer and an external communications device through saidparallel printer port; and decompressing said compressed digitalinformation into said digital information.
 17. The program storagedevice of claim 16 wherein said step of compressing and said step ofdecompressing use ADPCM technique.
 18. The program storage device ofclaim 16 further comprising the step of determining the maximumtransmission speed of said parallel printer port.
 19. The programstorage device of claim 16 further comprising the step of movingmultiple-byte digital information using the block move instruction ofsaid computer.
 20. The program storage device of claim 16 furthercomprising the step of storing said digital information on a storagemedium on said computer.
 21. An apparatus that transfers digitalinformation through a parallel printer interface, comprising: a parallelprinter interface that comprises a data port interface and a status portinterface wherein said data port interface comprises a plurality ofwires and said status port interface comprises a plurality of wires; anda strobe that comprises one wire of said data port interface, saidstrobe clocks digital information transferred through said parallelprinter interface.
 22. The apparatus of claim 21 that further comprisesa compression/decompression function that compresses and decompressesthe digital information.
 23. The apparatus of claim 22 wherein saidcompression/decompression function utilizes the ADPCM data compressiontechnique.
 24. A method that transfers digital information through aparallel printer interface, comprising: clocking digital informationwith a strobe, said parallel printer interface comprises a data portinterface and a status port interface wherein said data port interfacecomprises a plurality of wires and said status port interface comprisesa plurality of wires, said strobe comprises one wire of said data portinterface; and transferring digital information through said parallelprinter interface.
 25. The method of claim 24 that further comprises acompression/decompression function that compresses and decompresses thedigital information.
 26. The method of claim 25 wherein saidcompression/decompression function utilizes the ADPCM data compressiontechnique.
 27. An system that transfers digital information through aparallel printer interface, comprising: a parallel printer interfacethat comprises a data port interface and a status port interface whereinsaid data port interface comprises a plurality of wires and said statusport interface comprises a plurality of wires; and a strobe thatcomprises one wire of said data port interface, said strobe clocksdigital information transferred through said parallel printer interface.28. The system of claim 27 that further comprises acompression/decompression function that compresses and decompresses thedigital information.
 29. The system of claim 28 wherein saidcompression/decompression function utilizes the ADPCM data compressiontechnique.
 30. A program storage device readable by a machine, tangiblyembodying a program of instructions executable by the machine to performa method that transfers digital information through a parallel printerinterface, comprising: clocking digital information with a strobe, saidparallel printer interface comprises a data port interface and a statusport interface wherein said data port interface comprises a plurality ofwires and said status port interface comprises a plurality of wires,said strobe comprises one wire of said data port interface; andtransferring digital information through said parallel printerinterface.
 31. The program storage device of claim 30 that furthercomprises a compression/decompression function that compresses anddecompresses the digital information.
 32. The program storage device ofclaim 31 wherein said compression/decompression function utilizes theADPCM data compression technique.
 33. A method that provides digitalinformation with the ability to transfer through a parallel printerinterface, comprising: providing a parallel printer interface thatcomprises a data port interface and a status port interface wherein saiddata port interface comprises a plurality of wires and said status portinterface comprises a plurality of wires; and providing a strobe thatcomprises one wire of said data port interface; said strobe clocksdigital information transferred through said parallel printer interface.34. The method of claim 33 that further comprises acompression/decompression function that compresses and decompresses thedigital information.
 35. The method of claim 34 wherein saidcompression/decompression function utilizes the ADPCM data compressiontechnique.
 36. A communications device that is external to a computerthat transfers digital information through a parallel printer interface,comprising: a digital interface circuit that comprises a data interfacecircuit and a status transmit circuit, said digital interface circuitcouples to a parallel printer interface, said parallel printer interfacecomprises a data port interface that comprises a plurality of wires anda status port interface that comprises a plurality of wires; a strobedetect circuit coupled to said digital interface circuit that detects astrobe that comprises one wire of said data port interface; and acontrol logic circuit coupled to said strobe detect circuit and saiddigital interface circuit, said control logic circuit controls thetransferring of digital information through said parallel printerinterface.
 37. The communications device of claim 36 further comprisinga compression/decompression circuit coupled to said control logiccircuit wherein said compression/decompression circuit compresses anddecompresses digital information.
 38. The communications device of claim37 wherein said compression/decompression circuit utilizes the ADPCMdata compression technique.
 39. A method that uses a communicationsdevice that is external to a computer to transfer digital informationthrough a parallel printer interface, comprising: clocking digitalinformation with a strobe; transferring digital information through aparallel printer interface coupled to a digital interface circuit, saiddigital interface circuit comprises a data interface circuit and astatus transmit circuit, said parallel printer interface comprises adata port interface that comprises a plurality of wires and a statusport interface that comprises a plurality of wires; detecting saidstrobe with a strobe detect circuit coupled to said digital interfacecircuit, said strobe comprises one wire of said data port interface; andcontrolling the transferring of said digital information through saidparallel printer interface with a control logic circuit coupled to saidstrobe detect circuit and said digital interface circuit.
 40. The methodof claim 39 further comprising a compression/decompression circuitcoupled to said control logic circuit wherein saidcompression/decompression circuit compresses and decompresses thedigital information.
 41. The method of claim 40 wherein saidcompression/decompression circuit utilizes the ADPCM data compressiontechnique.
 42. A system that uses a communications device that isexternal to a computer that transfers digital information through aparallel printer interface, comprising: a digital interface circuit thatcomprises a data interface circuit and a status transmit circuit, saiddigital interface circuit couples to a parallel printer interface, saidparallel printer interface comprises a data port interface thatcomprises a plurality of wires and a status port interface thatcomprises a plurality of wires; a strobe detect circuit coupled to saiddigital interface circuit that detects a strobe that comprises one wireof said data port interface; and a control logic circuit coupled to saidstrobe detect circuit and said digital interface circuit, said controllogic circuit controls the transferring of digital information throughsaid parallel printer interface.
 43. The system of claim 42 furthercomprising a compression/decompression circuit coupled to said controllogic circuit wherein said compression/decompression circuit compressesand decompresses digital information.
 44. The system of claim 43 whereinsaid compression/decompression circuit utilizes the ADPCM datacompression technique.
 45. A program storage device readable by amachine, tangibly embodying a program of instructions executable by themachine to perform a method that uses a communications device that isexternal to a computer to transfer digital information through aparallel printer interface, comprising: clocking digital informationwith a strobe; transferring digital information through a parallelprinter interface coupled to a digital interface circuit, said digitalinterface circuit comprises a data interface circuit and a statustransmit circuit, said parallel printer interface comprises a data portinterface that comprises a plurality of wires and a status portinterface that comprises a plurality of wires; detecting said strobewith a strobe detect circuit coupled to said digital interface circuit,said strobe comprises one wire of said data port interface; andcontrolling the transferring of said digital information through saidparallel printer interface with a control logic circuit coupled to saidstrobe detect circuit and said digital interface circuit.
 46. Theprogram storage device of claim 45 further comprising acompression/decompression circuit coupled to said control logic circuitwherein said compression/decompression circuit compresses anddecompresses digital information.
 47. The program storage device ofclaim 46 wherein said compression/decompression circuit utilizes theADPCM data compression technique.
 48. A method that provides acommunications device that is external to a computer with the ability totransfer digital information through a parallel printer interface,comprising: providing a digital interface circuit that comprises a datainterface circuit and a status transmit circuit, said digital interfacecircuit couples to a parallel printer interface, said parallel printerinterface comprises a data port interface that comprises a plurality ofwires and a status port interface that comprises a plurality of wires;providing a strobe detect circuit coupled to said digital interfacecircuit that detects a strobe that comprises one wire of said data portinterface; and coupling a control logic circuit coupled to said strobedetect circuit and said digital interface circuit, said control logiccircuit controls the transferring of digital information through saidparallel printer interface.
 49. The method of claim 48 furthercomprising a compression/decompression circuit coupled to said controllogic circuit wherein said compression/decompression circuit compressesand decompresses digital information.
 50. The method of claim 49 whereinsaid compression/decompression circuit utilizes the ADPCM datacompression technique.
 51. An apparatus that transfers digitalinformation through parallel printer interface, comprising: a parallelprinter interface that comprises a data port interface and a status portinterface wherein said data port interface comprises a plurality ofwires and said status port interface comprises a plurality of wires; andan embedded strobe that comprises one wire of said data port interface,said strobe clocks digital information transferred through said parallelprinter interface.
 52. The apparatus of claim 51 that further comprisesa compression/decompression function that compresses and decompressesthe digital information.
 53. The apparatus of claim 52 wherein saidcompression/decompression function utilizes the ADPCM data compressiontechnique.
 54. A method that transfers digital information through aparallel printer interface, comprising: clocking digital informationwith an embedded strobe, said parallel printer interface comprises adata port interface and a status port interface wherein said data portinterface comprises a plurality of wires and said status port interfacecomprises a plurality of wires, said strobe comprises one wire of saiddata port interface; and transferring digital information through saidparallel printer interface.
 55. The method of claim 54 that furthercomprises a compression/decompression function that compresses anddecompresses the digital information.
 56. The method of claim 55 whereinsaid compression/decompression function utilizes the ADPCM datacompression technique.
 57. A system that transfers digital informationthrough a parallel printer interface, comprising: a parallel printerinterface that comprises a data port interface and a status portinterface wherein said data port interface comprises a plurality ofwires and said status port interface comprises a plurality of wires; andan embedded strobe that comprises one wire of said data port interface,said strobe clocks digital information transferred through said parallelprinter interface.
 58. The system of claim 57 that further comprises acompression/decompression function that compresses and decompresses thedigital information.
 59. The system of claim 58 wherein saidcompression/decompression function utilizes the ADPCM data compressiontechnique.
 60. A program storage device readable by a machine, tangiblyembodying a program of instructions executable by the machine to performa method that transfers digital information through a parallel printerinterface, comprising: clocking digital information with an embeddedstrobe, said parallel printer interface comprises a data port interfaceand a status port interface wherein said data port interface comprises aplurality of wires and said status port interface comprises a pluralityof wires, said strobe comprises one wire of said data port interface;and transferring digital information through said parallel printerinterface.
 61. The program storage device of claim 60 that furthercomprises a compression/decompression function that compresses anddecompresses the digital information.
 62. The program storage device ofclaim 61 wherein said compression/decompression function utilizes theADPCM data compression technique.
 63. A method that provides digitalinformation with the ability to transfer through a parallel printerinterface, comprising: providing a parallel printer interface thatcomprises a data port interface and a status port interface wherein saiddata port interface comprises a plurality of wires and said status portinterface comprises a plurality of wires; and providing an embeddedstrobe that comprises one wire of said data port interface; said strobeclocks digital information transferred through said parallel printerinterface.
 64. The method of claim 63 that further comprises acompression/decompression function that compresses and decompresses thedigital information.
 65. The method of claim 64 wherein saidcompression/decompression function utilizes the ADPCM data compressiontechnique.